jQuery.fn.toggleText = function(a,b) {
  return this.html(this.html().replace(new RegExp("("+a+"|"+b+")", "m"),
  function(x){return(x==a)?b:a;}));
}

$.fn.documentSelection = function() {
  var element = this[0];
  if ( element.contentWindow.document.selection )
    return element.contentWindow.document.selection.createRange().text;
  else
    return element.contentWindow.getSelection().toString();
};


(function( $ ) {
  //Метод обращения к документу
	$.fn.document = function() {
    var element = this[0];
    if ( element.nodeName.toLowerCase() == 'iframe' )
      return element.contentWindow.document;
      /*
      return ( $.browser.msie )
        ? document.frames[element.id].document
        : element.contentWindow.document // contentDocument;
       */
    else
      return $(this);
  };

  //Точка входа при создании WYSIWYG
  $.fn.wysiwyg = function( options ) {// Первое, куда мы попадаем
    //Создаем HTML для iFrame
  	var options = $.extend({
      debug : false,
      html  : '<'+'?xml version="1.0" encoding="UTF-8"?'+'><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="' + W_CSS + 'jquery.wysiwyg_in.css?v=2" type="text/css" media="screen" /></head><body class="' + options['bodyClass'] + '">INITIAL_CONTENT</body></html>'
    }, options);

    return this.each(function() {
      Wysiwyg(this, options);
    });
  };

  //Создает WYSIWYG, если его нет
  function Wysiwyg( element, options )  // вызывается из $.fn.wysiwyg (element - исходный элемент, options - переданные опции)
  {
    /*    return this instanceof Wysiwyg
      ? this.init(element, options)
      : new Wysiwyg(element, options);
*/
		if (this instanceof Wysiwyg) {    // Если это один из объектов Wysiwyg
    	this.init(element, options); // то проводим инициализацию
    }
    else {                           // Если это НЕ один из объектов Wysiwyg
    	new Wysiwyg(element, options);// то создаем объект Wysiwyg с соответствующими параметрами
    }
    return this;
  }

  //Конструктор WYSIWYG
  $.extend(Wysiwyg.prototype, {
    original : null,
    options  : {},

    element  : null,
    editor   : null,

    init : function( element, options ) {
      options['wysiwygType'] = options['wysiwygType'] || false; // запоминаем тип редактора (служит для определения комплектации)
      options['isModeration'] = options['isModeration'] || false; // запоминаем тип редактора (служит для определения комплектации)
      options['bodyClass'] = options['bodyClass'] || ''; // запоминаем тип редактора (служит для определения комплектации)
      this.editor = element; //Запоминаем исходный элемент textarea
      this.options = options || {}; // запоминаем настройки

      var newX = element.width || element.clientWidth; //определяем ширину и высоту исходного элемента (textarea)
      var newY = element.height || element.clientHeight;

      if ( element.nodeName.toLowerCase() == 'textarea' ) {// если исходный элемент именно textarea
        this.original = element;  // запоминаем орининальный элемент именно как исходный textarea

        var editor = this.editor = $('<iframe></iframe>').css({
          minHeight : ( newY - 8 ).toString() + 'px',
          width   : ( newX - 8 ).toString() + 'px'
        }).attr('id', $(element).attr('id') + 'IFrame');

        if ( $.browser.msie ) {
          this.editor
            .css('height', ( newY ).toString() + 'px');

          /**
          var editor = $('<span></span>').css({
            width   : ( newX - 8 ).toString() + 'px',
            height  : ( newY - 8 ).toString() + 'px'
          }).attr('id', $(element).attr('id') + 'IFrame');

          editor.outerHTML = this.editor.outerHTML;
           */
        }
      }
      //Создаем панель
      var panel = this.panel = $('<ul></ul>').addClass('panel');
      this.appendMenu('bold', {title: 'жирный'});
      this.appendMenu('italic', {title: 'курсив'});
      this.appendMenu('strikeThrough', {title: 'зачеркнутый'});
      this.appendMenu('underline', {title: 'подчеркнутый'});


      this.appendMenuSeparator();
      this.appendMenu('justifyLeft', {title: 'по левому краю'});
      this.appendMenu('justifyCenter', {title: 'по центру'});
      this.appendMenu('justifyRight', {title: 'по правому краю'});
      this.appendMenu('justifyFull', {title: 'по ширине'});
      if (options['wysiwygType'] != 'comment' && false) {



        this.appendMenu('indent', {title: 'увеличить отступ'});
        this.appendMenu('outdent', {title: 'уменьшить отступ'});

        this.appendMenuSeparator();
        this.appendMenu('subscript', {title: 'подстрочный'});
        this.appendMenu('superscript', {title: 'надстрочный'});
      }
      this.appendMenuSeparator();
      this.appendMenu('undo', {title: 'отменить'});
      this.appendMenu('redo', {title: 'вернуть'});

      this.appendMenuSeparator();
      this.appendMenu('insertOrderedList', {title: 'нумерованный список'});
      this.appendMenu('insertUnorderedList', {title: 'маркированный список'});
      this.appendMenu('insertHorizontalRule', {title: 'черта'});

      if ( $.browser.msie ) {
        this.appendMenu('createLink', {title: 'гиперссылка'}, null, function( self ) { self.editorDoc.execCommand('createLink', true, null); });
        //this.appendMenu('insertImage', {title: 'вставить изображение'}, null, function( self ) { self.editorDoc.execCommand('insertImage', true, null); });
        //this.appendMenu('insertImage', {title: 'вставить изображение'});
      }
      else {
        this.appendMenu('createLink', {title: 'гиперссылка'}, null, function( self ) { var szURL = prompt('Ingrese una URL', 'http://'); if ( szURL && szURL.length > 0 ) self.editorDoc.execCommand('createLink', false, szURL); });


        //this.appendMenu('insertImage', {title: 'вставить изображение'}, null, function( self ) { var szURL = prompt('Ingrese una URL', 'http://'); if ( szURL && szURL.length > 0 ) self.editorDoc.execCommand('insertImage', false, szURL); });
        //this.appendMenu('insertImage', {title: 'вставить изображение'});
      }

      //Дополнительные кнопки на тот случай, если это не комментарий
      if (options['wysiwygType'] != 'comment') {
				//Дополнительные кнопки для модератора
      	if(options['isModeration']) {//Кнопка вставки кнопки модерирования
	        this.appendMenu('fill', {title: 'Модерировать (закрасить текст)'}, null, function( self ) {
          self.editorDoc.execCommand("forecolor", false, "#f00301");
          var tempSpan = $(self.editorDoc.body).find("span").add($(self.editorDoc.body).find("font"));
          $(tempSpan).each(function(){
          	if( ($(this).css("color") == 'rgb(240, 3, 1)') || ($(this).css("color") == '#f00301') ){
            	$(this).css('background', '#3c4046');
            	$(this).css('color', '#3c4046');
          	}
          });
          if ($.browser.opera)
          	$("#" + $(self.original).attr('id') + "IFrame").get(0).focus();
          else
          		$("#" + $(self.original).attr('id') + "IFrame").get(0).contentWindow.focus();
        	});
      	}
      	
      	//Кнопка вставки изображения
      	this.appendMenu('insertImage', {title: 'вставить изображение'}, null, function( self ) {

      	});
        
      	if ( $.browser.mozilla ) {
	        this.appendMenuSeparator();
	        var tempArr1 = new Array; var tempArr2 = new Array; var tempArr3 = new Array;
	        tempArr1[0] = 'h1';tempArr1['title'] = 'заголовок первого уровня';
	        this.appendMenu('heading', tempArr1, 'h1');
	        tempArr2[0] = 'h2';tempArr2['title'] = 'заголовок второго уровня';
	        this.appendMenu('heading', tempArr2, 'h2');
	        tempArr3[0] = 'h3';tempArr3['title'] = 'заголовок третьего уровня';
	        this.appendMenu('heading', tempArr3, 'h3');
        }
      }
      
      if ( ( $.browser.msie ) ) {
        this.appendMenuSeparator();
        this.appendMenu('cut', {title: 'вырезать'});
        this.appendMenu('copy', {title: 'копировать'});
        this.appendMenu('paste', {title: 'вставить'});
      }
      if ( ( $.browser.mozilla ) )
      {
        this.appendMenuSeparator();
        this.appendMenu('increaseFontSize', {title: 'увеличить шрифт'});
        this.appendMenu('decreaseFontSize', {title: 'уменьшить шрифт'});
      }

      //Кнопка просмотра HTML кода
      this.appendMenuSeparator();
			//if (options['wysiwygType'] != 'comment') {
      //if(options['isModeration']) {
      if(true) {
      	this.appendMenu('html', {title: 'посмотреть HTML-код'}, null, function( self ) {
        	if ( self.viewHTML ) {
          	self.setContent( $(self.original).val() );
          	$(self.original).hide();
        	}
        	else {
          	self.saveContent();
          	$(self.original).show();
        	}
	        self.viewHTML = !( self.viewHTML );
        });
      }

      //Кнопка отмены форматирования
      this.appendMenu('removeFormat', {title: 'убрать форматирование'}, null, function( self ) {
        self.editorDoc.execCommand('removeFormat', false, []);
        self.editorDoc.execCommand('unlink', false, []);
      });
      
      

      //Сборка и настройка WYSIWYG
      this.element = $('<div></div>').css({
        width : ( newX ).toString() + 'px'
      }).addClass('wysiwyg')
        	.append(panel)
        		//.append( $('<div><!-- --></div>').css({ clear : 'both' }) )
        		.append(editor);
      $(element)
      	// .css('display', 'none')
      	.hide()
      		.before(this.element);
      this.viewHTML = false;
      this.initialHeight = newY - 8;
      this.initialContent = $(element).text();
      this.initFrame();
      this.initImageInsert();
      if ( this.initialContent.length == 0 )
        this.setContent('<br />');
        
				

      	
    },

    //Инициализация фрейма
    initImageInsert : function() {
		  var objWysiwyg = this;  
		  var objUserElement = objWysiwyg.element;  
		  var objIframe = $(objUserElement).find('iframe');  
		  var mozillaAttr = '';
		  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
		  
		  //Создание блока для вставки изображения - начало
      $(objUserElement).append(objWysiwyg.getImageInsertBlockHtml());
      //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    	//Создание блока для вставки изображения - конец
      //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      //Клик на "выберите файл для загрузки" - начало
      $(objUserElement).find('#buttonForLoad').upload({
	      name: 'file',
	      method: 'post',
	      enctype: 'multipart/form-data',
	      action: W_AJAX + 'wysiwyg/upload/',
	      onSubmit: function() {
	        //alert('submit');
	        $('#buttonForLoad').attr('loading', '1');
	        $('#imageInsertPreview').html('<img src="' + W_IMAGES + 'icons/ajax.gif" alt="" />');
	      },
	      onComplete: function(data) {
	        //alert('complete');
	      	//alert(data);
	        var theImage = data;
	        var src = theImage;
	        //alert($('#buttonForLoad').attr('loading'));
	        if($('#buttonForLoad').attr('loading') != '2') {
	        	$('#imageInsertPreview').html('<img src="' + theImage.replace('m_', 's_') + '" alt="" />');
	        	$('#imageInsertLoadedSrc').val(theImage);
	        	$('#bigImageForLoad').html('<img name="myImage" src="' + theImage + '" onload="' +
	        	'$(\'#imageInsertWidth\').val(document.myImage.width);' +
	        	'$(\'#imageInsertHiddenWidth\').val(document.myImage.width);' +
	        	'$(\'#imageInsertHeight\').val(document.myImage.height);' +
	        	'$(\'#imageInsertHiddenHeight\').val(document.myImage.height);' +
	        	'$(\'#imageInsertWidth\').val(\'200\');if($(\'#imageInsertHiddenHeight\').val() == 0 || $(\'#imageInsertHiddenWidth\').val() == 0 || $(\'#imageInsertWidth\').val() == 0) { $(\'#imageInsertHeight\').val(0) } else {$(\'#imageInsertHeight\').val(intval($(\'#imageInsertWidth\').val() * $(\'#imageInsertHiddenHeight\').val() / $(\'#imageInsertHiddenWidth\').val()))};" alt="" />');
	        	//alert(theImage);
	        	//alert();

	        	
	        	
	        	
	        }
	        $('#buttonForLoad').attr('loading', '0');
	      }
    	});/*
			*/
    	//Клик на "выберите файл для загрузки" - конец
    	//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    	$(objUserElement).find('#buttonForSave').click(function () {
    		if($('#buttonForLoad').attr('loading') != '1') {
    		  var theImage = $('#imageInsertLoadedSrc').val();
	      	if(theImage.length > 5) {
	      	  var marginTop = intval($('#imageInsertMarginTop').val());
	      		var marginRight = intval($('#imageInsertMarginRight').val());
		        var marginBottom = intval($('#imageInsertMarginBottom').val());
		        var marginLeft = intval($('#imageInsertMarginLeft').val());
		        var floatType = $('#imageInsertFloatType').val();
		        var imgWidth = intval($('#imageInsertWidth').val());
		        var imgHeight = intval($('#imageInsertHeight').val());
		        if ($.browser.opera ) {
	            $(objIframe).get(0).focus();
            }
            else{
              $(objIframe).get(0).contentWindow.focus();
            }
            if(mozillaAttr != '') {
              //$(objWysiwyg.editorDoc.body).find("img[src$=" + mozillaAttr + "]").remove();
            	$(objWysiwyg.editorDoc.body).find("img[src$=" + mozillaAttr + "]").attr('src', mozillaAttr + "_2");
            	objWysiwyg.insertHtmlToPosition('<img src="' + theImage + '" alt="" style="margin: ' + marginTop + 'px ' + marginRight + 'px ' + marginBottom + 'px ' + marginLeft + 'px;float:' + floatType + ';' + ((imgWidth > 0) && (imgHeight > 0) ? 'width:' + imgWidth + 'px;height:' + imgHeight + 'px;' : '') + '" />', mozillaAttr + "_2");
            }
            else {
              objWysiwyg.insertHtmlToPosition('<img src="' + theImage + '" alt="" style="margin: ' + marginTop + 'px ' + marginRight + 'px ' + marginBottom + 'px ' + marginLeft + 'px;float:' + floatType + ';' + ((imgWidth > 0) && (imgHeight > 0) ? 'width:' + imgWidth + 'px;height:' + imgHeight + 'px;' : '') + '" />');
            }
		        $(objUserElement).find("#imageInsertMenu").hide();
		        tb_remove();
	      	}
	      	else {
	      		alert('Сначала вам необходимо выбрать изображение. Воспользуйтесь иконкой в правом верхнем углу.');
	      	}
	      }
	      else {
	      	alert('В данный момент идет загрузка изображения и вы не можете утвердить изменения. Попробуйте позже.');
	      }
    	});
    	
    	
    	$(objUserElement).find('#imageInsertMenu').hide();
    	$(objWysiwyg.editorDoc.body).html();
    	
			//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			//Клик на иконку "Вставить изображение" - начало
			//$(objUserElement).find('.insertImage').attr('alt', '#TB_inline?height=300&width=400&inlineId=imageInsertMenu');
			//$(objUserElement).find('.insertImage').attr('class', 'thickbox insertImage');
			$(objUserElement).find('.insertImage').click(function () {
				$('#buttonForLoad').attr('loading', '2');
				var iframeDocument = objIframe.document();
				var editFrame;
				var selection = '';
				var selectionType = '';
				$('#imageInsertMarginTop').val(0);
  			$('#imageInsertMarginRight').val(11);
  			$('#imageInsertMarginBottom').val(5);
  			$('#imageInsertMarginLeft').val(0);
  			$('#imageInsertFloatType').val('left');
  			$('#imageInsertLoadedSrc').val('');
  			//alert('insert');
  			$('#imageInsertPreview').html('');			
  			$('#imageInsertWidth').val('');
  			$('#imageInsertHeight').val('');		
  			$('#imageInsertHiddenWidth').val('');
  			$('#imageInsertHiddenHeight').val('');
				tb_show('Настройка изображения', '#TB_inline?height=275&width=320', false);
				$("#TB_ajaxContent").html($(objUserElement).find("#imageInsertMenu").children());
				$("#TB_window").css({display:"block"});  
				$("#TB_window").unload(function () {
					$(objUserElement).find("#imageInsertMenu").append( $("#TB_ajaxContent").children() ); // move elements back when you're finished
				});	
				
				{
					if($.browser.msie) {
						var iframeId = $(objIframe).attr('id');
						editFrame = frames[iframeId].document;//Для IE
						selection = editFrame.selection;
						selectionType = selection.type;
					}
					else {
						editFrame =  $(objUserElement).find('iframe').get(0).contentWindow;
						//Получаем селекшн
						selection = editFrame.getSelection();
					}
					mozillaSelection = '';
					mozillaAttr = '';
					//Если селекшн не пустой
					if(selection == '' || selectionType == 'Control') {
						//alert('Попли в селекшн');
						var startHtml = $(objWysiwyg.editorDoc.body).html();
						var hiddenDot = W_IMAGES + 'dot/hidden_dot_for_wysiwyg_2.gif';
						//Вставляем туда скрытую картинку
						objWysiwyg.insertHtmlToPosition('<img src="' + hiddenDot + '" alt="" />');
						var finishHtml =$(objWysiwyg.editorDoc.body).html();;
						$(objWysiwyg.editorDoc.body).find("img[src$=hidden_dot_for_wysiwyg_2.gif]").remove();
						var currentPosition;
						currentPosition = finishHtml.indexOf(hiddenDot);
						var firstPartEndPosition = finishHtml.lastIndexOf('<', currentPosition);
						//Определяем текст до вставленной кртинки
						var beforeHtml = finishHtml.substr(0, firstPartEndPosition);
						currentPosition = finishHtml.indexOf('>', currentPosition + 1);
						//Определяем текст после вставленной картинки
						var afterHtml = finishHtml.substr(currentPosition + 1);
						//О
						var selectedHtml = startHtml.substr(firstPartEndPosition, startHtml.length - afterHtml.length - beforeHtml.length);
						if(selectedHtml.length > 0) {// Если  действительности какой-то текст выделен
							$(objWysiwyg.editorDoc.body).html(startHtml);
							if((selectedHtml.toLowerCase()).indexOf('<img') == 0) { // Если выделен тег img
								if (selectedHtml.indexOf('>') == selectedHtml.length - 1) { //Если выделен только тег img и больше ничего
									mozillaSelection = selectedHtml;
									currentPosition = selectedHtml.indexOf('src=');
									var src = selectedHtml.substr(currentPosition + 5, selectedHtml.indexOf('"', currentPosition + 5) - currentPosition - 5);
									mozillaAttr = src;
									var objImage = $(objWysiwyg.editorDoc.body).find("img[src$=" + src + "]").after(selectedHtml).remove();
									if ($.browser.opera ) {
										$('#imageInsertMarginTop').val(intval(getMarginsByStrOfMargin($(objImage).css('margin'), 'top')));
										$('#imageInsertMarginRight').val(intval(getMarginsByStrOfMargin($(objImage).css('margin'), 'right')));
		    		  			$('#imageInsertMarginBottom').val(intval(getMarginsByStrOfMargin($(objImage).css('margin'), 'bottom')));
	  	  		  			$('#imageInsertMarginLeft').val(intval(getMarginsByStrOfMargin($(objImage).css('margin'), 'left')));
	  	  		  			$('#imageInsertWidth').val(intval($(objImage).css('width')));
	  	  		  			$('#imageInsertHiddenWidth').val(intval($(objImage).get(0).width));
	  	  		  			$('#imageInsertHeight').val(intval($(objImage).css('height')));
	  	  		  			$('#imageInsertHiddenHeight').val(intval($(objImage).get(0).height));
									}
									else {
										$('#imageInsertMarginTop').val(intval($(objImage).css('margin-top')));
		    		  			$('#imageInsertMarginRight').val(intval($(objImage).css('margin-right')));
		    		  			$('#imageInsertMarginBottom').val(intval($(objImage).css('margin-bottom')));
	  	  		  			$('#imageInsertMarginLeft').val(intval($(objImage).css('margin-left')));
	  	  		  			$('#imageInsertWidth').val(intval($(objImage).css('width')));
	  	  		  			$('#imageInsertHiddenWidth').val(intval($(objImage).get(0).width));
	  	  		  			$('#imageInsertHeight').val(intval($(objImage).css('height')));
	  	  		  			$('#imageInsertHiddenHeight').val(intval($(objImage).get(0).height));
									}
	    		  			//alert(src);
									$('#imageInsertFloatType').val($(objImage).css('float'));
	    		  			$('#imageInsertLoadedSrc').val($(objImage).attr('src'));
	    		  			//alert('<img src="' + $(objImage).attr('src') + '" alt="" style="width:50px;" />');
	    		  			$('#imageInsertPreview').html('<img src="' + $(objImage).attr('src') + '" alt="" style="width:50px;" />');
								}
							}
						}
					}
					else {

					}
				}
				this.blur();
				
				
      });
			//Клик на иконку "Вставить изображение - конец
			//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    },
    
    //Инициализация фрейма
    initFrame : function() {
    	this.editorDoc = $(this.editor).document();
      this.editorDoc.open();
      this.editorDoc.write(
        this.options.html.replace(/INITIAL_CONTENT/, this.initialContent)
      );
      this.editorDoc.close();
      this.editorDoc.contentEditable = 'true';
      this.editorDoc.designMode = 'on';

    },

    getContent : function() {
      return $( $(this.editor).document() ).find('body').html();
    },

    setContent : function( newContent ) {
      $( $(this.editor).document() ).find('body').html(newContent);
    },

    saveContent : function() {
      if ( this.original )
        $(this.original).val( this.getContent() );
    },

    appendMenu : function( cmd, args, className, fn ) {
      var self = this;
      var args = args || [];
      var liEl = $('<li></li>');
      if ($.browser.msie) {
        liEl.append(
        	$('<a href="/" title="' + args['title'] + '" onclick="return false;"><!-- --></a>').addClass(className || cmd)
        );
      }
      else {
      	liEl.append(
        	$('<a title="' + args['title'] + '" ><!-- --></a>').addClass(className || cmd)
      	);
      }
      if ($.browser.msie) {
        liEl.mousedown(function() {
          if ( fn ) {
            fn(self);
          }
          else {
            //Раньше здесь было только про обработку вставки изображения
						//alert('Вставка изображения в IE');
          }
        });

      }
      else{ /*Обработка функции не IE*/
      	liEl.click(function() {
        	if ( fn ) {
          	//alert(fn);
        		fn(self);
          }
          else {
						//alert('команда форматирования вне IE');
          	self.editorDoc.execCommand(cmd, false, args);
						if ($.browser.opera ) {
	            $("#" + $(self.original).attr('id') + "IFrame").get(0).focus();
            }
            else{
              $("#" + $(self.original).attr('id') + "IFrame").get(0).contentWindow.focus();
            }
          }
        });
      }
      liEl.appendTo( this.panel );
    },

    appendMenuSeparator : function() {
      $('<li class="separator"></li>').appendTo( this.panel );
    },
    
    getImageInsertBlockHtml : function() {
			return '' +
				'<div id="imageInsertMenu" style="position:absolute;top:30%;left:10%;border:1px solid #000000;">' +
		  		'<table cellspacing="0" cellpadding="0">' +
		  		  '<tr>' + 
		  		    '<td colspan="2">' + 
		  		    	//'<div style="height:35px;width:222px;cursor:Pointer;"><img src="' + W_IMAGES + 'button/load_image.gif" id="buttonForLoad" style="height:35px;width:222px;cursor:Pointer;" alt="" /></div>' +
		  		    '</td>' +
		  		    '<td rowspan="7" style="width:30px;"></td>' +
		  		    '<td style="width:50px;text-align:center;padding-top:10px;">' + 
		  		    	//'<div style="height:35px;width:222px;cursor:Pointer;"><img src="' + W_IMAGES + 'button/load_image.gif" id="buttonForLoad" style="height:35px;width:222px;cursor:Pointer;" alt="" /></div>' +
		  		    	'<div style="height:28px;width:32px;cursor:Pointer;margin:auto;"><img src="' + W_IMAGES + 'button/open_image.gif" id="buttonForLoad" style="height:28px;width:32px;cursor:Pointer;" alt="" /></div>' +
		  		    '</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td colspan="2"></td>' +
		  		    '<td rowspan="6"><div id="imageInsertPreview"></div></td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;width:100px;">Обтекание:</td>' +
		  		    '<td>'+
		  		      '<select value="" id="imageInsertFloatType">' +
				    			'<option value="none">нет</option>' +
				    			'<option value="left">по правому краю</option>' +
				    			'<option value="right">по левому краю</option>' +
				  			'</select>' + 
				  		 '</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;">Отступ сверху:</td>' +
		  		    '<td><input type="text" style="width:30px;" maxlength="3" value="" id="imageInsertMarginTop" /> px</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;">Отступ справа:</td>' +
		  		    '<td><input type="text" style="width:30px;" maxlength="3" value="" id="imageInsertMarginRight" /> px</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;">Отступ снизу:</td>' +
		  		    '<td><input type="text" style="width:30px;" maxlength="3" value="" id="imageInsertMarginBottom" /> px</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;">Отступ слева:</td>' +
		  		    '<td><input type="text" style="width:30px;" maxlength="3" value="" id="imageInsertMarginLeft" /> px</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;">Ширина:</td>' +
		  		    '<td><div style="width:0px;height:0px;overflow:hidden;" id="bigImageForLoad"></div><input type="text" style="width:30px;" maxlength="3" value="" id="imageInsertWidth" onkeyup="if($(\'#imageInsertHiddenHeight\').val() == 0 || $(\'#imageInsertHiddenWidth\').val() == 0 || $(\'#imageInsertWidth\').val() == 0) { $(\'#imageInsertHeight\').val(0) } else {$(\'#imageInsertHeight\').val(intval($(\'#imageInsertWidth\').val() * $(\'#imageInsertHiddenHeight\').val() / $(\'#imageInsertHiddenWidth\').val()))};" /><input type="hidden" style="width:30px;" maxlength="3" value="" id="imageInsertHiddenWidth" /> px</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    '<td style="height:25px;">Высота:</td>' +
		  		    '<td><input type="text" style="width:30px;" maxlength="3" value="" id="imageInsertHeight" onkeyup="if($(\'#imageInsertHiddenHeight\').val() == 0 || $(\'#imageInsertHiddenWidth\').val() == 0 || $(\'#imageInsertHeight\').val() == 0) { $(\'#imageInsertWidth\').val(0) } else {$(\'#imageInsertWidth\').val(intval($(\'#imageInsertHeight\').val() * $(\'#imageInsertHiddenWidth\').val() / $(\'#imageInsertHiddenHeight\').val()))};" /><input type="hidden" style="width:30px;" maxlength="3" value="" id="imageInsertHiddenHeight" /> px</td>' +
		  		  '</tr>' +
		  		  '<tr>' + 
		  		    //'<td><input type="hidden" style="width:30px;" maxlength="3" value="" id="imageInsertLoadedSrc" /></td>' +
		  		    '<td style="text-align:center;padding-top:10px;" colspan="4"><input type="hidden" style="width:30px;" maxlength="3" value="" id="imageInsertLoadedSrc" /><img style="cursor:Pointer;width:100px;height:23px;" src="' + W_IMAGES + 'button/save_browser.gif" id="buttonForSave" alt="" /></td>' +
		  		  '</tr>' +
		  		'</table>' +
		  	'</div>';      
    },
    
    insertHtmlToPosition : function(htmlToInsert, srcToRemove) {
      var objWysiwyg = this;  
		  var objUserElement = objWysiwyg.element;  
		  var objIframe = $(objUserElement).find('iframe');  
    	
//      var selection = $(self.editor).documentSelection(); //Получаем текст текущего выделения
      //if ( selection.length > 0 ) 
      if(true) {
        //alert("Text is selected");
				//alert('вставка');
        var startSrcText = $(objWysiwyg.editorDoc.body).html(); //Сохраняем весь исходный текст до обработки
				//alert(startSrcText);
				if(startSrcText == '<br>'){
				  $(objWysiwyg.editorDoc.body).html(htmlToInsert + '<br>')
				}
				else {
				  if(srcToRemove == undefined) {
				    if ($.browser.opera) $(objIframe).get(0).focus();
  	        else $(objIframe).get(0).contentWindow.focus();
    	      objWysiwyg.editorDoc.execCommand("insertImage", false, W_IMAGES + "dot/hidden_dot_for_wysiwyg.gif");
    	      $(objWysiwyg.editorDoc.body).find("img[src$=hidden_dot_for_wysiwyg.gif]").after(htmlToInsert);
	        	$(objWysiwyg.editorDoc.body).find("img[src$=hidden_dot_for_wysiwyg.gif]").remove();
					}
					else {
					  $(objWysiwyg.editorDoc.body).find("img[src$=" + srcToRemove + "]").after(htmlToInsert);
						$(objWysiwyg.editorDoc.body).find("img[src$=" + srcToRemove + "]").remove();
					}
				}
				/*objWysiwyg.editorDoc.execCommand("forecolor", false, "#f00302"); //Красим выделенный текст в красный цвет
        var tempRedSpans = $(objWysiwyg.editorDoc.body).find("img[src$=hidden_dot_for_wysiwyg.gif]").filter(function () {
          return ($(this).css("color") == 'rgb(240, 3, 2)') || ($(this).css("color") == '#f00302');
        }); //Получаем все раскрашенные span'ы*/
//                  alert("'Red point'");
        /*var isWrongSelectionExists = 0;
        var parentCut;
        $(tempRedSpans).each(function() {
          parentCut = $(this).parents("cut");
          if ($(parentCut).length > 0) {
            $(this).replaceWith($(this).html());

            //Если есть выделенные каты, их мы заменем их содержимым
            var tempRedInnerCuts = $(self.editorDoc.body).find("cut").filter(function () {
              return ($(this).css("color") == 'rgb(240, 3, 2)') || ($(this).css("color") == '#f00302');
            });
            $(tempRedInnerCuts).each(function () {
              $(this).children("span").each(function() {
                $(this).replaceWith($(this).html());
              });
              $(this).replaceWith($(this).html());
            });

            isWrongSelectionExists = isWrongSelectionExists | 1;
            return this;
          }
        });*/
      }
    }
  });
})(jQuery);

$(document).ready(function() {
  $('.wysiwygComment').each(function(i) {
        $(this).wysiwyg({ debug : true, wysiwygType : 'comment' });
    var curElement = $(this);
    $(this).parents('form').submit( function() {
      $(curElement).val($( $('#' + $(curElement).attr('id') + 'IFrame').document() ).find('body').html());
    });
  });

  $('.wysiwygAdmin').each(function(i) {
  	var isModeration = false;
    if($(this).attr('isModeration') == '1')
      isModeration = true;
    var bodyClass = '';
    if($(this).attr('bodyClass')) bodyClass = $(this).attr('bodyClass');
    $(this).wysiwyg({ debug : true, wysiwygType : 'admin', isModeration : isModeration, bodyClass : bodyClass });
    var curElement = $(this);
    $(this).parents('form').submit( function() {
    	$(curElement).val($( $('#' + $(curElement).attr('id') + 'IFrame').document() ).find('body').html());
    });
  });
});